﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace MvcApp01.Models
{
    [Table("Empleados")]
    public class Empleado
    {

        [Key]
        // Para campos NO autonuméricos [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int Id { get; set; }

        [Display(Name ="Nombre del Empleado")]
        [Required(ErrorMessage ="El nombre del empleado es obligatorio")]
        [StringLength(100, ErrorMessage ="El nombre del empleado no puede tener más de 100 caracteres")]
        public string Nombre { get; set;  }

        [Range(18.00, 100.00, ErrorMessage = "La edad debe estar entre 18 y 100 años")]
        public int? Edad { get; set; }

        [DataType(DataType.EmailAddress, ErrorMessage ="El email debe ser una dirección válida")]
        [StringLength(255, ErrorMessage = "El email del empleado no puede tener más de 255 caracteres")]
        public string Email { get; set;  }

        [DataType(DataType.Date, ErrorMessage = "La fecha de ingreso debe ser una fecha válida")  DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [Last20Years(ErrorMessage = "La fecha de ingreso debe estar entre los últimos 20 años")]
        public DateTime? FechaIngreso { get; set; }

        [DataType(DataType.Currency, ErrorMessage = "Solo valores monetarios son permitidos")]
        [Range(0.01, 10000000.00, ErrorMessage = "El salario debe ser entre 0.01 and 10000000.00")]
        public double? Salario { get; set; }

        public int? IdDepartamento { get; set; }

        [ForeignKey("IdDepartamento")]
        public virtual Departamento Departamentos { get; set; }
    }
}